在前端开发中，防抖（Debounce）和节流（Throttle） 是优化高频事件触发的重要技术手段，
常用于提升页面性能、减少服务器请求或避免无效操作。以下是它们的详细定义及区别：
一、防抖（Debounce）
定义
● 核心思想：当持续触发事件时，一定时间段内没有再触发事件，事件处理函数才会执行一次。
若设定的时间到来之前，又一次触发了事件，则重新开始延时。
● 类比场景：
  ○ 比如「等人进电梯」：有人不断按电梯按钮时，电梯会等待最后一个人进入后再关门（重新计时），
  直到一段时间内没人按按钮才会关门。
  ○ 搜索框联想功能：用户输入时不会立即请求数据，而是等输入暂停后再发送请求。
实现逻辑
1. 触发事件后，设置一个定时器，延迟执行事件处理函数。
2. 在定时器到期前，若再次触发事件，则清除之前的定时器，重新设置新的定时器。
3. 只有当定时器计时结束且没有新事件触发时，才执行处理函数。
典型应用场景
● 搜索框输入联想（用户停止输入后再请求数据）。
● 窗口 resize 事件（调整窗口大小结束后再重新渲染布局）。
● 按钮提交防止重复点击。
二、节流（Throttle）
定义
● 核心思想：当持续触发事件时，保证一定时间段内只调用一次事件处理函数。它会限制事件的触发频率，
不管事件触发得多频繁，都保证在规定时间内只执行一次。
● 类比场景：
  ○ 比如「水龙头放水」：即使一直开着水龙头，也只能按固定频率出水（如每秒 1 升），
  不会因为拧得更开而加快出水速度。
  ○ 游戏中的技能冷却：技能释放后一段时间内无法再次使用。
实现逻辑
● 时间戳方式：记录上一次事件触发的时间，当新事件触发时，
若与上一次的时间间隔超过设定阈值，则执行处理函数并更新时间戳。
● 定时器方式：触发事件时，若定时器未启动，则设置定时器，延迟执行处理函数；
在定时器期间，后续事件会被忽略，直到定时器结束后才允许再次触发。
典型应用场景
● 滚动事件（如懒加载图片时，避免频繁计算元素位置）。
● 鼠标移动事件（如拖拽时限制位置更新频率）。
● 游戏中的键盘按键响应（防止按键被多次触发）。
三、核心区别对比
维度	防抖（Debounce）	节流（Throttle）
触发时机	事件停止触发后执行一次	事件持续触发时，按固定频率执行
延时逻辑	每次触发事件都会重置定时器，重新计时	定时器启动后，期间忽略后续事件
应用场景	适用于「触发频率高但只需要最后一次结果」的场景	适用于「需要控制事件触发频率」的场景
示例	搜索框输入、窗口 resize	滚动加载、鼠标移动